/*
 * Copyright (C) 2013 AndXmppSDK Project <hljdrl@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.drl.xmpp.util;

/**
 *
 */
public class Logcat {

    public static final String LOGTAG = "AndXmppSDK";
    
    /**
     * verbose(v)日志信息开关
     */
    public static final boolean VERBOSE_ON = true;
    
    /**
     * error(e)日志信息开关
     */
    public static final boolean ERROR_ON = true;
    
    /**
     * debug(d)日志信息开关
     */
    public static final boolean DEBUG_ON = true;

    public static void v(String msg) {
    	if(VERBOSE_ON) android.util.Log.v(LOGTAG, msg);
    }
    
    public static void v(String msg, Throwable tr) {
    	if(VERBOSE_ON) android.util.Log.v(LOGTAG, msg, tr);
    }

    public static void e(String msg) {
    	if(ERROR_ON) android.util.Log.e(LOGTAG, msg);
    }

    public static void e(String msg, Throwable tr) {
    	if(ERROR_ON) android.util.Log.e(LOGTAG, msg, tr);
    }
    
    /**
     * 仅限于调试用，默认TAG为{@link #LOGTAG}
     *
     * @param msg 调试信息
     */
    public static void d(byte msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Byte.toString(msg));
    }
    
    public static void d(short msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Short.toString(msg));
    }
    
    public static void d(int msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Integer.toString(msg));
    }
    
    public static void d(long msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Long.toString(msg));
    }
    
    public static void d(float msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Float.toString(msg));
    }
    
    public static void d(double msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Double.toString(msg));
    }
    
    public static void d(char msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Character.toString(msg));
    }
    
    public static void d(boolean msg) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Boolean.toString(msg));
    }
    
    public static void d(Object msg) {
    	if (msg == null) {
    		if(DEBUG_ON) android.util.Log.d(LOGTAG, "null");
    	} else {
    		if(DEBUG_ON) android.util.Log.d(LOGTAG, msg.toString());
    	}
    }
    
    /**
     * 仅限于调试用, 可以使用自定义TAG
     *
     * @param tag tag标签
     * @param msg 调试信息
     */
    public static void d(String tag, String msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, msg);
    }
    
    public static void d(String tag, byte msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Byte.toString(msg));
    }
    
    public static void d(String tag, short msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Short.toString(msg));
    }
    
    public static void d(String tag, int msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Integer.toString(msg));
    }
    
    public static void d(String tag, long msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Long.toString(msg));
    }
    
    public static void d(String tag, float msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Float.toString(msg));
    }
    
    public static void d(String tag, double msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Double.toString(msg));
    }
    
    public static void d(String tag, char msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Character.toString(msg));
    }
    
    public static void d(String tag, boolean msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, Boolean.toString(msg));
    }
    
    public static void d(String tag, Object msg) {
    	if(DEBUG_ON) android.util.Log.d(tag, msg.toString());
    }
    
    /**
     * 仅限于调试用，可以使用自定义TAG
     *
     * @param tag tag标签
     * @param msg 调试信息
     * @param tr 一个异常可以打印日志出来
     */
    public static void d(String tag, String msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, msg, tr);
    }
    
    public static void d(String tag, byte msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Byte.toString(msg), tr);
    }
    
    public static void d(String tag, short msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Short.toString(msg), tr);
    }
    
    public static void d(String tag, int msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Integer.toString(msg), tr);
    }
    
    public static void d(String tag, long msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Long.toString(msg), tr);
    }
    
    public static void d(String tag, float msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Float.toString(msg), tr);
    }
    
    public static void d(String tag, double msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Double.toString(msg), tr);
    }
    
    public static void d(String tag, char msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Character.toString(msg), tr);
    }
    
    public static void d(String tag, boolean msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, Boolean.toString(msg), tr);
    }
    
    public static void d(String tag, Object msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(tag, msg.toString(), tr);
    }
    
    /**
     * 仅限于调试用，默认TAG为{@link #LOGTAG}
     *
     * @param msg 调试信息
     * @param tr 一个异常可以打印日志出来
     */
    public static void d(String msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, msg, tr);
    }
    
    public static void d(byte msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Byte.toString(msg), tr);
    }
    
    public static void d(short msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Short.toString(msg), tr);
    }
    
    public static void d(int msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Integer.toString(msg), tr);
    }
    
    public static void d(long msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Long.toString(msg), tr);
    }
    
    public static void d(float msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Float.toString(msg), tr);
    }
    
    public static void d(double msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Double.toString(msg), tr);
    }
    
    public static void d(char msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Character.toString(msg), tr);
    }
    
    public static void d(boolean msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, Boolean.toString(msg), tr);
    }
    
    public static void d(Object msg, Throwable tr) {
    	if(DEBUG_ON) android.util.Log.d(LOGTAG, msg.toString(), tr);
    }
}
